package com.hollis公众号.json序列化;

import java.io.IOException;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;

/**
 * 现在，不同的序列化框架得到的json内容并不相同，如果对于同一个对象，我使用fastjson进行序列化，再使用Gson反序列化会发生什么？
 *
 * 以上代码，输出结果：
Model3[isSuccess=false]
这和我们预期的结果完全相反，原因是因为JSON框架通过扫描所有的getter后发现有一个isSuccess方法，然后根据JavaBeans的规范，解析出变量名为success，把model对象序列化城字符串后内容为{"success":true}。
根据{"success":true}这个json串，Gson框架在通过解析后，通过反射寻找Model类中的success属性，但是Model类中只有isSuccess属性，所以，最终反序列化后的Model类的对象中，isSuccess则会使用默认值false。
但是，一旦以上代码发生在生产环境，这绝对是一个致命的问题。
 *
 */
public class BooleanMainTest2 {

	public static void main(String[] args) throws IOException {
		Model3 model3 = new Model3();
		model3.setSuccess(true);
		Gson gson = new Gson();
		ObjectMapper om = new ObjectMapper();
		System.out.println(om.writeValueAsString(model3));
		System.out.println(gson.fromJson(om.writeValueAsString(model3), Model3.class));
	}

}
